package com.justnow.offer;


import java.util.Stack;

/**
 * @author justnow
 * Created on 2020-09-16
 * Description
 */
public class Solution50 {

}

class MinStack {
    private Stack<Integer> stack;
    private Stack<Integer> min_stack;
    public MinStack() {
        stack = new Stack<>();
        min_stack = new Stack<>();
    }

    /**
     * 首先stack入栈，
     * 然后判断最小栈是否为空，或者最小栈最小值的栈顶元素与当前元素的大小，
     * 插入到最小栈中
     * @param x
     */
    public void push(int x) {
        stack.push(x);
        if (min_stack.isEmpty() || x <= min_stack.peek()) {
            min_stack.push(x);
        }
    }

    /**
     * 栈顶元素，删除之后，判断是否为最下值，如果是的话，直接将最小栈中的元素也删除了
     */
    public void pop() {
        if (stack.pop().equals(min_stack.peek())) {
            min_stack.pop();
        }
    }


    public int top() {
        return stack.peek();
    }

    /**
     * 最小值，就是最小栈的栈顶元素
     * @return
     */
    public int getMin() {
        return min_stack.peek();
    }
}
